home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / string / RCS / strcasecmp.c,v < prev    next >
Text File  |  1992-03-27  |  5KB  |  177 lines

  1. head     1.3;
  2. branch   ;
  3. access   ;
  4. symbols  ;
  5. locks    ; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.3
  10. date     92.03.27.13.30.07;  author rab;  state Exp;
  11. branches ;
  12. next     1.2;
  13.  
  14. 1.2
  15. date     89.03.22.16.06.31;  author rab;  state Exp;
  16. branches ;
  17. next     1.1;
  18.  
  19. 1.1
  20. date     88.07.01.15.45.01;  author ouster;  state Exp;
  21. branches ;
  22. next     ;
  23.  
  24.  
  25. desc
  26. @@
  27.  
  28.  
  29. 1.3
  30. log
  31. @A few little optimizations.
  32. @
  33. text
  34. @/*
  35.  * Copyright (c) 1987 Regents of the University of California.
  36.  * All rights reserved.
  37.  *
  38.  * Redistribution and use in source and binary forms are permitted
  39.  * provided that this notice is preserved and that due credit is given
  40.  * to the University of California at Berkeley. The name of the University
  41.  * may not be used to endorse or promote products derived from this
  42.  * software without specific written prior permission. This software
  43.  * is provided ``as is'' without express or implied warranty.
  44.  */
  45.  
  46. #if defined(LIBC_SCCS) && !defined(lint)
  47. static char sccsid[] = "@@(#)strcasecmp.c    5.5 (Berkeley) 11/24/87";
  48. #endif /* LIBC_SCCS and not lint */
  49.  
  50. #include <sys/types.h>
  51. #include <string.h>
  52.  
  53. /*
  54.  * This array is designed for mapping upper and lower case letter
  55.  * together for a case independent comparison.  The mappings are
  56.  * based upon ascii character sequences.
  57.  */
  58. static u_char charmap[] = {
  59.     '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007',
  60.     '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017',
  61.     '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027',
  62.     '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037',
  63.     '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047',
  64.     '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057',
  65.     '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067',
  66.     '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077',
  67.     '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
  68.     '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
  69.     '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
  70.     '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137',
  71.     '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
  72.     '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
  73.     '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
  74.     '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177',
  75.     '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207',
  76.     '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217',
  77.     '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227',
  78.     '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237',
  79.     '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247',
  80.     '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257',
  81.     '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267',
  82.     '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277',
  83.     '\300', '\341', '\342', '\343', '\344', '\345', '\346', '\347',
  84.     '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',
  85.     '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367',
  86.     '\370', '\371', '\372', '\333', '\334', '\335', '\336', '\337',
  87.     '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347',
  88.     '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',
  89.     '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367',
  90.     '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377',
  91. };
  92.  
  93. int
  94. strcasecmp(s1, s2)
  95.     char *s1, *s2;
  96. {
  97.     register u_char u1, u2;
  98.  
  99.     for (;;) {
  100.     u1 = (u_char) *s1++;
  101.     u2 = (u_char) *s2++;
  102.     if (charmap[u1] != charmap[u2]) {
  103.         return charmap[u1] - charmap[u2];
  104.     }
  105.     if (u1 == '\0') {
  106.         return 0;
  107.     }
  108.     }
  109. }
  110.  
  111. int
  112. strncasecmp(s1, s2, n)
  113.     char *s1, *s2;
  114.     register int n;
  115. {
  116.     register u_char u1, u2;
  117.  
  118.     for (; n != 0; --n) {
  119.     u1 = (u_char) *s1++;
  120.     u2 = (u_char) *s2++;
  121.     if (charmap[u1] != charmap[u2]) {
  122.         return charmap[u1] - charmap[u2];
  123.     }
  124.     if (u1 == '\0') {
  125.         return 0;
  126.     }
  127.     }
  128.     return 0;
  129. }
  130.  
  131. @
  132.  
  133.  
  134. 1.2
  135. log
  136. @*** empty log message ***
  137. @
  138. text
  139. @d62 1
  140. a62 1
  141.     char *s1, *s2;
  142. d64 1
  143. a64 3
  144.     register u_char    *cm = charmap,
  145.             *us1 = (u_char *)s1,
  146.             *us2 = (u_char *)s2;
  147. d66 10
  148. a75 4
  149.     while (cm[*us1] == cm[*us2++])
  150.         if (*us1++ == '\0')
  151.             return(0);
  152.     return(cm[*us1] - cm[*--us2]);
  153. d83 1
  154. a83 3
  155.     register u_char    *cm = charmap,
  156.             *us1 = (u_char *)s1,
  157.             *us2 = (u_char *)s2;
  158. d85 11
  159. a95 4
  160.     while (--n >= 0 && cm[*us1] == cm[*us2++])
  161.         if (*us1++ == '\0')
  162.             return(0);
  163.     return(n < 0 ? 0 : cm[*us1] - cm[*--us2]);
  164. d97 1
  165. @
  166.  
  167.  
  168. 1.1
  169. log
  170. @Initial revision
  171. @
  172. text
  173. @d18 1
  174. d60 1
  175. d74 1
  176. @
  177.